This invention relates generally to communication systems. While the invention is particularly directed to the transmission of data in communication systems and will be thus described with specific reference thereto, it will be appreciated that the invention may have usefulness in other fields and applications.
By way of background, SIP (Session Initiation Protocol) is a standard designed by IETF (Internet Engineering Task Force) to provide advanced telephony services over the internet. SIP is used to establish, terminate and modify communications sessions in an IP (Internet Protocol) network, as set forth in the current standard, RFC 3261-SIP: Session Initiation Protocol, June 2002. (RFC 3261 specifies an Internet standards track protocol for the Internet community and requests discussions and suggestions for improvements.) SIP interoperates with existing protocols and swaps Meta data that enables session initialization.
As SIP only provides the method for dealing with sessions, it has to work alongside other protocols and standards, which provide the level of service required by real-time communication. To facilitate proper communication, SIP has to provide a range of features and functions to establish a session.
Once a party has been located, a session has to be established. Although SIP does not understand the session, it has to transmit the description of the session from the caller to the receiver. This usually results in negotiation between all of the parties involved in the call. It could be that a device does not support video, but only voice. SIP transfers this information using the multipurpose internet mail extensions (MIME). This is used in Web and e-mail services to describe content. This means there is always a wide-range of options available in negotiation. The most common form of session description used by SIP is the Session Description Protocol (SDP).
A call in progress can change features, such as a video stream being added to a voice conversation. New parties can also be added into a conversation, which requires additional negotiation of features. Call modification does not have to be as drastic as either of these measures. Common telephony functions, including muting and call holding, are also supported by SIP. The range of call features supported depends on the session description protocol in use. After all parties are finished with the session they hang-up. SIP has to deal with this call termination. It is also the job of a SIP device to register its current location with a UAS (user-agent server). This ensures that a party can be found even when mobile.
SIP has well-defined messages that are used for communication. A message can either be a request or a response message. In conventional SIP message architecture, both request and response SIP messages are built from the same three components: start lines, headers and the body.
The start line is the beginning of every SIP message. It is first used to identify the type of message and the protocol. Depending on the message type the start line is either a request-line for requests or a status-line for responses. A request-line includes a request URL, which is used to identify the requested party. This line can be rewritten by proxies, although the ‘To’ field later on cannot. A status-line holds the numeric status-code and the text version. SIP headers contain a list of fields that are used to identify message attributes. The body conveys the mechanics of a connection. It is common for the body to hold protocol information such as SDP, and only the receiving client can understand what the body means.
However, the “traditional” way to process a SIP message is highly inefficient, which makes a SIP-centric system, like the 3GPP IMS architecture, an implementation challenge. The IP Multimedia Subsystem (or IMS) is an IP multimedia and telephony core network that is defined by 3GPP and 3GPP2 standards and organizations based on IETF Internet protocols. IMS is access independent, as it supports IP-to-IP session over wireline IP, 802.11, 802.15, CDMA, packet data along with GSM/EDGE/UMTS and other packet data applications. IMS is a standardized reference architecture that consists of session control, connection control and an applications services framework along with subscriber and services data.
Generally, in systems such as the 3GPP IMS, an incoming SIP message is entirely parsed, and a multitude of internal objects are allocated from the memory by the SIP stack to represent the contained information in an internal format (i.e., “decoded” format). The initial SIP message buffer is, in general, lost, and it is very costly to copy or build a new SIP message from an old one, which are very desirable capabilities for SIP.
The present invention contemplates a new and improved method and apparatus that resolves the above-referenced difficulties and others.